package com.telit.common.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;


@Data
public class SysUserVo {

    private Long id;

    @ApiModelProperty(value = "用户账号", dataType = "String")
    @NotNull(message = "该字段为必填项")
    @Size(max = 20, message = "该信息限定20个字符以内")
    private String username;

    @ApiModelProperty(value = "真实姓名", dataType = "String")
    @NotNull(message = "该字段为必填项")
    @Size(max = 20, message = "该信息限定20个字符以内")
    private String realname;

    @ApiModelProperty(value = "角色类型", dataType = "String")
    @NotNull(message = "该字段为必填项")
    @Size(max = 20, message = "该信息限定20个字符以内")
    private String roleType;

    @ApiModelProperty(value = "性别(0女,1男)", dataType = "Integer")
    private Integer gender;

    @ApiModelProperty(value = "年龄", dataType = "Integer")
    private Integer age;

    @ApiModelProperty(value = "身份证号", dataType = "String")
    @Size(max = 20, message = "该信息限定20个字符以内")
    private String idCardNumber;

    @ApiModelProperty(value = "联系地址", dataType = "String")
    @Size(max = 255, message = "该信息限定255个字符以内")
    private String address;

    @ApiModelProperty(value = "邮箱地址", dataType = "String")
    @Size(max = 255, message = "该信息限定255个字符以内")
    private String email;

    @ApiModelProperty(value = "手机号码", dataType = "String")
    @Size(max = 20, message = "该信息限定20个字符以内")
    private String phone;

    @ApiModelProperty(value = "座机号码", dataType = "String")
    @Size(max = 20, message = "该信息限定20个字符以内")
    private String telphone;

    @ApiModelProperty(value = "出生年月", dataType = "String")
    @Size(max = 10, message = "该信息限定10个字符以内")
    private String birth;

    @ApiModelProperty(value = "数据字典-政治面貌", dataType = "String")
    @Size(max = 10, message = "该信息限定10个字符以内")
    private String political;

    @ApiModelProperty(value = "数据字典-职务", dataType = "String")
    @Size(max = 10, message = "该信息限定10个字符以内")
    private String post;

    @ApiModelProperty(value = "数据字典-职务层次", dataType = "String")
    @Size(max = 10, message = "该信息限定10个字符以内")
    private String postLevel;

    @ApiModelProperty(value = "数据字典-职务级别", dataType = "String")
    @Size(max = 10, message = "该信息限定10个字符以内")
    private String postGrade;

    @ApiModelProperty(value = "籍贯", dataType = "String")
    @Size(max = 50, message = "该信息限定50个字符以内")
    private String nativePlace;

    @ApiModelProperty(value = "QQ号", dataType = "String")
    @Size(max = 15, message = "该信息限定15个字符以内")
    private String qqNumber;

    @ApiModelProperty(value = "是否接收短信(0否,1是)", dataType = "Integer")
    private Integer sendSms;

    @ApiModelProperty(value = "所属单位", dataType = "String")
    @Size(max = 20, message = "该信息限定20个字符以内")
    private String unit;

    @ApiModelProperty(value = "头像地址", dataType = "String")
    @Size(max = 255, message = "该信息限定255个字符以内")
    private String picPath;

    @ApiModelProperty(value = "登录设备标识", dataType = "String")
    @Size(max = 255, message = "该信息限定255个字符以内")
    private String equipmentId;

    @ApiModelProperty(value = "行政区划编码", dataType = "String")
    @Size(max = 20, message = "该信息限定20个字符以内")
    private String districtCode;

    @ApiModelProperty(value = "所属组织机构", dataType = "Integer")
    private Integer orgId;

    @ApiModelProperty(value = "用户排序(默认0)", dataType = "Integer")
    private Integer orderNum;

    @ApiModelProperty(value = "是否禁用(0否,1是)", dataType = "Integer")
    private Integer disabled;

    @ApiModelProperty(value = "是否内置(0否,1是)", dataType = "Integer")
    private Integer buildIn;

    @ApiModelProperty(value = "逻辑删除(0否,1是)", dataType = "Integer")
    private Integer deleted;

    @ApiModelProperty(value = "登录状态(0离线,1在线)", dataType = "Integer")
    private Integer loginStatus;

//    @ApiModelProperty(value = "最后登录时间", dataType = "LocalDateTime")
//    private LocalDateTime lastLoginTime;

    @ApiModelProperty(value = "登录类型(web、app、wechat)", dataType = "String")
    @NotNull(message = "该字段为必填项")
    @Size(max = 100, message = "该信息限定100个字符以内")
    private String loginType;

    @ApiModelProperty(value = "备注", dataType = "String")
    @Size(max = 255, message = "该信息限定255个字符以内")
    private String remark;

    @ApiModelProperty(value = "用户角色id集合")
    private List<Long> roleIds;

    @ApiModelProperty(value = "组织机构名称,一级一级拼接")
    private String allOrgName;

    @ApiModelProperty(value = "行政区划名称")
    private String districtName;

    @ApiModelProperty(value = "角色集合")
    private List<SysRoleEntity> roleList;
}
